feat(release): v8.4.0 — decision request context + pasal_56b_dpa transfer basis#210
Merged
Conversation
af6bcb3 to
0fad2b6
Compare
…sfer basis Targets AxonFlow platform v8.5.0 (epic #2508). - DecisionSummary + DecisionExplanation gain a context: dict[str, str] | None surfacing the sanitized request context a PEP attaches to a Decision Mode call (platform #2509). list_decisions() returns the platform-truncated 5-key summary; explain_decision() returns the full map plus a context_truncated: bool | None flag. - types.py adds a TransferBasis Literal alias + TRANSFER_BASIS_* constants (adequacy, safeguards, pasal_56b_dpa, consent), exported from the package root. The AuditLogEntry.transfer_basis field stays str | None (not a closed Literal) so existing 'safeguards' code is unaffected and the SDK never rejects a value a newer platform may add on an audit read. - version 8.3.0 -> 8.4.0, CHANGELOG entry, unit tests, and a runtime-e2e driver that creates a decision via the PEP path and reads context back through the SDK. Signed-off-by: Saurabh Jain <saurabh.jain@getaxonflow.com>
0fad2b6 to
1379314
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Multi-SDK v8.4.0 release (epic getaxonflow/axonflow-enterprise#2508) — Python SDK.
contexton decision reads (platform #2509).DecisionSummaryandDecisionExplanationgaincontext: dict[str, str] | None;DecisionExplanationalso gainscontext_truncated: bool | None. Pydantic resolves both viamodel_validate(the models alreadyextra='ignore'/lenient, so no parser change).list_decisions()returns the platform-truncated 5-key summary;explain_decision()returns the full map.pasal_56b_dpatransfer basis (platform #2513). NewTransferBasisLiteral alias +TRANSFER_BASIS_*constants, exported from the package root.Version
8.3.0 → 8.4.0, CHANGELOG, unit tests, runtime-e2e driver.Design decision —
transfer_basisstaysstr | None(read this)The brief's literal text suggested widening a pydantic
LiteralonAuditLogEntry.transfer_basis. The field is not aLiteraltoday (it isstr | None), and I deliberately kept itstr | Nonerather than converting it to a closed pydanticLiteral:AuditLogEntryis a response model. A closedLiteralis enforced by pydantic at runtime — a future platformtransfer_basisvalue (the platform comment says values are surfaced verbatim and the set may grow) would raiseValidationErrorand breaksearch_audit_logs()for any tenant carrying that value. That is exactly the "SDK silently breaks a customer audit read" failure this release is trying to avoid.TransferBasis = Literal["adequacy","safeguards","pasal_56b_dpa","consent"]alias (for callers who want to annotate their own variables) and theTRANSFER_BASIS_*string constants. This matches the Go/Java/Rust SDKs, which expose named constants over a permissive string field. TS uses a compile-time-only union (erased at runtime, so it can't reject an unknown value).Flagging for master/operator sign-off per the No-Silent-Deferrals clause.
§E2E — live platform (current
main, includes #2509 + #2513)python runtime-e2e/decision_context_transfer_basis/test.pyagainst a real agent:The driver acts as the PEP via a raw
POST /api/v1/decide(not SDK-wrapped per ADR-056), then reads the decision back through the realhttpxSDK path.Tests
pytest— 1011 passed, 29 skipped, 81% coverage (threshold 75%).ruff check+ruff format --checkclean; runtime-e2e no-mocks lint + version-alignment pass. New tests:TestDecisionContextV85(summary/explanation context, truncated flag, defaults) andTestTransferBasisPasal56b(constants,pasal_56b_dparound-trip,safeguardsbackward-compat).Notes
pip install axonflow(no pinned version) — nothing to bump.Epic: getaxonflow/axonflow-enterprise#2508